The present invention relates generally to computing systems, and more particularly, to techniques for simulation of Multi top-level graphical containers in a computing environment.
A Graphical User Interface (GUI) is often referred to as a graphical (rather than purely textual) user interface to a computer. Typically, a Web browser used for browsing the Internet provides a GUI. The term GUI may have come into existence because the first interactive user to interface with computers were not really graphical. Instead, text-and-keyboard oriented interfaces were first used which usually consisted of a set of commands and computer responses. The command interface of a DOS operating system (which is still available on some Windows operating systems) is an example of a user-computer interface before GUI was developed. An intermediate step in user interfaces between the command line interface and the GUI may be a non-graphical menu-based interface, which allows a mouse to be used rather than just commands entered by a keyboard.
Today's many operating systems provide a fairly advanced graphical user interface. In addition, applications can use various elements of a GUI that come with the operating system and/or add their own graphical user interface elements and ideas. A GUI sometimes uses one or more metaphors for objects familiar in real life, such as the desktop, the view through a window, or the physical layout in a building. Elements of a GUI may include, for example: windows, frames, pull-down menus, buttons, scroll bars, iconic images, wizards, the mouse, pointer, and curser. With the increasing use of multimedia as part of the GUI, sound, voice, motion video, and virtual reality interfaces are likely to become part of the GUI for many applications. A system's graphical user interface along with its input devices is sometimes referred to as its “look-and-feel.”
When creating an application in an object-oriented programming environment, many object-oriented tools exist that facilitate writing a graphical user interface. These tools (e.g., a graphical development toolkit) may, for example, include a set of GUI elements that are defined as a class widget from which object instances can be created for an application. An application programmer may develop code by using or modifying prepackaged methods that an object will use to respond to user stimuli.
In general, a widget can be an element of a graphical user interface (GUI) that displays information or provides a specific way for a user to interact with the operating system and application. Widgets include icons, pull-down menus, buttons, selection boxes, progress indicators, on-off checkmarks, scroll bars, windows, window edges (that let you resize the window), toggle buttons, forms, and many other devices for displaying information and for inviting, accepting, and responding to user actions.
A widget may also refer to a small program that is written in order to describe what a particular widget looks like, how it behaves, and how it interacts in response to user actions. Most operating systems include a set of ready-to-tailor widgets that a programmer can incorporate in an application, specifying how it is to behave. In object-oriented programming, each type of widget can be defined as a class (or a subclass under a broad generic widget class) and can be associated with a particular window. By way of example, in the AIX Enhanced X-Window Toolkit, a widget is the fundamental data type.
Most of the application development programming languages today, such as Java™ programming language and Tool Command Language, come with a ready-made library of widgets that a programmer can incorporate and modify. By way of example, Java™ development environment provides an Abstract Window Toolkit (AWT) which can be used, among other things, to develop web-based applications (or applet). Another GUI-based development tool (or toolkit) provided in the Java™ development environment is “Swing.” “Swing” provides a relatively robust framework for developing GUI-based applications that are platform independent (i.e., can be executed over a variety of different operating systems and/or hardware platforms). Swing provides components that do not rely on platform-specific (native) widgets typically used by a particular operating system (e.g., windows operating system). Rather, Swing components can be painted using graphic primitives (e.g., lines, rectangles, text). The painting can be delegated to a look and feel (L&F) plug-in that can imitate the native (L&F).
With the popularity of GUI-based applications (e.g., web browser, mail messengers), more and more graphical support has been provided in the operating systems. As a result, graphical support in the operating systems (e.g., windowing manager) have become more advanced and capable of handling relatively sophisticated tasks (e.g., allowing an application to generate and use multiple top-level containers). Although providing this level of graphical capabilities is feasible and desirable for some computing environments (e.g., a desk top), it may not be feasible or desirable for relatively advanced graphical support capabilities in many other computing environments (e.g., mobile phones, embedded devices, Personal Digital Assistants, etc.). However, it would be useful to allow the GUI-based applications that have been developed for environments with relatively advanced graphical support capability to also run on computing environments or devices that provide a limited or virtually no graphical support capability. This would also enable an application developer to develop a GUI-based application for various computing environments regardless of the level of graphical support that may be provided in them.
In view of the foregoing, alternative techniques for executing GUI-based application are needed. These techniques should allow a GUI-based application which expects an advanced graphical support capability to also be executed on an environment that provides a limited or virtually no graphical support capability.